A macro definition should not be redefined without marking that intent specifically by un-defining it first.
Noncompliant code example
#define A 1
#define A 2
Compliant solution
#define A 1
#undef A
#define A 2
Exceptions
If the redefinition has the same value as the original one. This is consistent with most C compilers warnings.
#define A 1
#define A 1